#!/bin/bash

# ActiveMQ监控服务启动脚本

# 设置Java环境
export JAVA_HOME=${JAVA_HOME:-/usr/lib/jvm/java-8-openjdk}
export PATH=$JAVA_HOME/bin:$PATH

# 应用配置
APP_NAME="activemq-status-api"
APP_JAR="target/activemq-status-api-1.0.0.jar"
APP_PORT=8088
APP_CONTEXT="/activemq-monitor"

# 日志配置
LOG_DIR="logs"
LOG_FILE="$LOG_DIR/app.log"
PID_FILE="app.pid"

# 创建日志目录
mkdir -p $LOG_DIR

# 检查Java版本
java_version=$(java -version 2>&1 | head -n 1 | cut -d'"' -f2)
echo "Java版本: $java_version"

# 检查jar包是否存在
if [ ! -f "$APP_JAR" ]; then
    echo "错误: 找不到jar包 $APP_JAR"
    echo "请先执行: mvn clean package"
    exit 1
fi

# 启动函数
start() {
    echo "启动 $APP_NAME..."
    
    # 检查是否已经运行
    if [ -f "$PID_FILE" ]; then
        pid=$(cat $PID_FILE)
        if ps -p $pid > /dev/null 2>&1; then
            echo "应用已经在运行中，PID: $pid"
            return
        else
            echo "清理过期的PID文件"
            rm -f $PID_FILE
        fi
    fi
    
    # 启动应用
    nohup java -jar $APP_JAR > $LOG_FILE 2>&1 &
    echo $! > $PID_FILE
    
    echo "应用启动成功，PID: $(cat $PID_FILE)"
    echo "访问地址: http://localhost:$APP_PORT$APP_CONTEXT"
    echo "日志文件: $LOG_FILE"
}

# 停止函数
stop() {
    echo "停止 $APP_NAME..."
    
    if [ -f "$PID_FILE" ]; then
        pid=$(cat $PID_FILE)
        if ps -p $pid > /dev/null 2>&1; then
            kill $pid
            echo "应用已停止，PID: $pid"
        else
            echo "应用未运行"
        fi
        rm -f $PID_FILE
    else
        echo "PID文件不存在，应用可能未运行"
    fi
}

# 重启函数
restart() {
    stop
    sleep 2
    start
}

# 状态检查函数
status() {
    if [ -f "$PID_FILE" ]; then
        pid=$(cat $PID_FILE)
        if ps -p $pid > /dev/null 2>&1; then
            echo "应用正在运行，PID: $pid"
            echo "访问地址: http://localhost:$APP_PORT$APP_CONTEXT"
        else
            echo "应用未运行，但PID文件存在"
            rm -f $PID_FILE
        fi
    else
        echo "应用未运行"
    fi
}

# 查看日志函数
logs() {
    if [ -f "$LOG_FILE" ]; then
        tail -f $LOG_FILE
    else
        echo "日志文件不存在: $LOG_FILE"
    fi
}

# 主函数
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    status)
        status
        ;;
    logs)
        logs
        ;;
    *)
        echo "用法: $0 {start|stop|restart|status|logs}"
        echo ""
        echo "命令说明:"
        echo "  start   - 启动应用"
        echo "  stop    - 停止应用"
        echo "  restart - 重启应用"
        echo "  status  - 查看应用状态"
        echo "  logs    - 查看应用日志"
        exit 1
        ;;
esac

exit 0 